package com.gengzp.rpc.core;

import com.gengzp.rpc.model.dto.remoteTransaction.RemoteTransactionDto;

import java.util.List;

/**
 * @ClassName RemoteTransactionalCoreFunc
 * @Description 远程事务核心方法接口
 * @Author gengzp
 * @Date 2025/8/11 20:52
 */
public interface RemoteTransactionalCoreFunc {

    /**
     * 记录已经提交成功的远程事务
     *
     * @param requestId           请求id
     * @param consumerServiceName 事务所属服务名
     * @param interfaceClass      接口类
     * @param methodName          方法名
     * @param parameterTypes      参数类型
     * @param params              参数
     */
    void saveRemoteTransaction(String requestId, String consumerServiceName, Class<?> interfaceClass,
                               String methodName, Class<?>[] parameterTypes, Object[] params);

    /**
     * 根据请求id查询已提交的所有远程事务
     *
     * @param requestId 请求id
     * @return 已提交的远程事务方法调用信息
     */
    List<RemoteTransactionDto> searchRemoteTransactionsByRequestId(String requestId);

}
